package com.luo.demo.ks.devops.controller;

import com.luo.demo.ks.devops.dto.BizAddDto;
import com.luo.demo.ks.devops.dto.BizQueryDto;
import com.luo.demo.ks.devops.utils.JsonUtils;
import com.luo.demo.ks.devops.vo.BizVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 业务测试 - Controller
 *
 * @author luohq
 * @version 1.0.0
 * @date 2022-05-17 09:51
 */
@RestController
@RequestMapping("/biz")
@Slf4j
public class BizController {


    @GetMapping("/{id}")
    public BizVo get(@PathVariable Long id) {
        log.info("biz get param: {}", id);
        BizVo bizVo = buildBizVo(id);
        log.info("biz get result: {}", JsonUtils.toJson(bizVo));
        return bizVo;
    }

    @GetMapping("/list")
    public List<BizVo> list(BizQueryDto bizQueryDto) {
        log.info("biz list param: {}", JsonUtils.toJson(bizQueryDto));
        List<BizVo> bizVoList = Arrays.asList(buildBizVo(1L), buildBizVo(2L));
        log.info("biz list result: {}", JsonUtils.toJson(bizVoList));
        return bizVoList;
    }

    @PostMapping
    public Boolean add(@RequestBody BizAddDto bizAddDto) {
        log.info("biz add param: {}", JsonUtils.toJson(bizAddDto));
        return true;
    }


    private BizVo buildBizVo(Long id) {
        return BizVo.builder()
                .id(id)
                .name("haha" + id)
                .date(new Date())
                .localDate(LocalDate.now())
                .localDateTime(LocalDateTime.now())
                .build();
    }
}
